<?php
class sql {
	public $error = '';
	public $db_time = 0.0; // Visu užklausų trukmė
	public $MysqlUzklausu = 0; // Visos užklausos
	public $uzklausos_info = array();

	public function __construct($db_host = "", $db_user = "", $db_pass = "", $db_name = "") {
		mysql_connect($db_host, $db_user, $db_pass);
		mysql_select_db($db_name);

		if(mysql_errno() == 2005) {//Duombazės adresas
			die("<div style='font-family:Verdana;font-size:12px;text-align:center;'><b>Blogas prisijungimo prie MySQL adresas, todėl nepavyko prisijungti prie MySQL serverio. Jūs nurodėte adresą: \"$db_host\", o spėjame jis greičiausiai yra \"localhost\" dar gali būti \"mysqlhost\" jeigu naudojatės hostingas.in paslaugomis</b><br><i>Klaidos kodas:</i> ".mysql_errno()."; <i>Klaidos apibudinimas:</i> ".mysql_error().";</div>");
		} elseif(mysql_errno() == 1049) {//Duombazė
			die("<div style='font-family:Verdana;font-size:12px;text-align:center;'><b>Nurodytos duombazės nėra (Jūs nurodėte \"$db_name\"), arba blogai įvedėte duombazę, arba jos išviso nėra!</b><br><i>Klaidos kodas:</i> ".mysql_errno()."; <i>Klaidos apibudinimas:</i> ".mysql_error().";</div>");
		} elseif(mysql_errno() == 1045) {//Slapyvardis arba/ir slaptažodis
				die("<div style='font-family:Verdana;font-size:12px;text-align:center;'><b>Blogas slaptažodis arba slapyvardis todėl negalime prisijungti prie MySQL. Įsitikinkite ar tikrai sukūrėte vartotoją su slaptažodžiui duombazei, tada įsitikinkite ar teisingai užrašėte prisijugnimo duomenis.</b><br><i>Klaidos kodas:</i> ".mysql_errno()."; <i>Klaidos apibudinimas:</i> ".mysql_error().";</div>");
		}
		return true;
	}

	private function KiekTruko($Start, $Finish ) {
		$tFrom = explode(' ', $Start);
		$tTo = explode(' ', $Finish);
		$reziume = ((float)$tTo[0] + (float)$tTo[1]) - ((float)$tFrom[0] + (float)$tFrom[1]);
		return $reziume;
	}

	public function uzklausa($query, $file="", $line="") {
		$this->MysqlUzklausu++;

		$u_pradzia = microtime();
		$result = mysql_query($query);
		$u_pabaiga = microtime();

		$mytime = $this->KiekTruko($u_pradzia,$u_pabaiga);
		$this->uzklausos_info[] = round($mytime,5) . ' | ' .  $query;
		$this->db_time += $mytime;
		//if (defined("DEBUG_EXTRA") && DEBUG_EXTRA) echo "<span class='comments'>".nl2br(htmlspecialchars($query, ENT_QUOTES, 'UTF-8'))." - ".round($mytime,4)."s.</span><br />\n";
		if (!$result) {
			$this->error .= print_r(array('<b>Failas</b>:'=>basename($file),'<b>Eilutė</b>:'=>$line,'<b>Klaidos kodas</b>:'=>mysql_errno(),'<b>Užklausa</b>:'=>$query,'<b>Pagalba</b>:'=>mysql_error()),true);
			return false;
		} else {
			return $result;
		}
	}

	public function free_result($result) {
		if (is_resource($result)) { return mysql_free_result($result); }
	}

	public function num_rows($query) {
		if (is_resource($query)) {
			return mysql_num_rows($query);
		} else {
			//$this->error .= "Netinkamai nurodytas MYSQL resursas\n";
			return false;
		}
	}

	public function kiek_irasu($table_where) {
		return $this->num_rows($this->uzklausa("SELECT * FROM ".$table_where));
	}

	public function masyvas($query) {
		if (is_resource($query)) {
			$result = mysql_fetch_assoc($query);
			return $result;
		} else {
			//$this->error .= "Netinkamai nurodytas MYSQL resursas\n";
			return false;
		}
	}

	//function db_affected_rows() {
	//	return mysql_affected_rows($this->active_db);
	//}

	public function all_masyvas($query) {
		while ($row = mysql_fetch_assoc($query)) {
			$res[] = $row;
		}
		return $res;
	}

	public function fix($sql) {
		if (QUOTES) $sql = stripslashes($sql);
		return mysql_real_escape_string($sql);
	}

	public function lock_table($table) {
		$this->uzklausa("LOCK TABLES ".$this->fix($table)." WRITE");
	}

	public function unlock_tables() {
		$this->uzklausa("UNLOCK TABLES");
	}

	public function table_exists($table) {
		return $this->rows($this->uzklausa("SHOW TABLES LIKE '" . $this->fix($table) . "'"));
	}
}
?>
